﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestorDeFlotas.Core;
using GestorDeFlotasDesktop.GD1C2012DataSetTableAdapters;
using System.Text.RegularExpressions;

namespace GestorDeFlotasDesktop.AbmCliente
{
    public partial class DatosCliente : FormDatosBase
    {
        private Cliente MyCliente { get; set; }

        public DatosCliente(ModoAbm modoAbm)
            : base(modoAbm)
        {
            InitializeComponent();
        }
        
        public DatosCliente(ModoAbm modoAbm, Cliente cliente)
            : this(modoAbm)
        {
            MyCliente = cliente;
        }

        private void DatosCliente_Load(object sender, EventArgs e)
        {
            if (this.modoAbm == ModoAbm.Alta)
            {
                this.MyCliente = new Cliente();
                this.check_activo.Checked = true;
                this.check_activo.Enabled = false;
            }
            else if (this.modoAbm == ModoAbm.Modificacion)
            {
                PopularControles(this.MyCliente);
            }
        }


         private void PopularControles(Cliente cli)
        {
            text_nombre.Text = Convert.ToString(cli.Nombre);
            text_apellido.Text = Convert.ToString(cli.Apellido);
            text_mail.Text = Convert.ToString(cli.Mail);
            text_tel.Text = Convert.ToString(cli.Tel);
            text_fechaNacimiento.Text = Convert.ToString(cli.Fecha_Nacimiento);
            text_direccion.Text = Convert.ToString(cli.Direccion);
            text_codigoPostal.Text = Convert.ToString(cli.CPostal);
            text_DNI.Text = Convert.ToString(cli.DNI);
            check_activo.Checked = cli.Activo;
        }

         private void boton_guardar_Click(object sender, EventArgs e)
         {
             bool camposInvalidos = ChequearCamposObligatorios();
             if (this.text_mail.Text != "" && validarEmail(this.text_mail.Text))
             {
                 MessageBox.Show("El mail tiene formato incorrecto", "Error", MessageBoxButtons.OK, MessageBoxIcon.Information);
                 return;

             }
             if (!camposInvalidos)
             {
                 PopularCliente();
                 TL_ClientesTableAdapter Clientes = new TL_ClientesTableAdapter();
                 if (Clientes.ScalarQuery_TelefonoRepetido(MyCliente.DNI, MyCliente.Tel) == 0)
                 {
                     if (this.modoAbm == ModoAbm.Alta)
                     {
                         MyCliente.Crear();
                     }
                     else if (this.modoAbm == ModoAbm.Modificacion)
                     {
                         MyCliente.Modificar();
                     }

                     this.DialogResult = DialogResult.OK;
                 }
                 else
                 {
                     MessageBox.Show("El telefono ya ha sido usado", "Error", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     return;
                 }

             }
             else
             {
                 MostrarMensajeCamposObligatorios_standard();
             }
         }

         private void PopularCliente()
         {
             MyCliente.Nombre = Convert.ToString(text_nombre.Text);
             MyCliente.Activo = check_activo.Checked;
             MyCliente.Apellido = Convert.ToString(text_apellido.Text);
             MyCliente.CPostal = Convert.ToInt32(text_codigoPostal.Text);
             MyCliente.Direccion = Convert.ToString(text_direccion.Text);
             MyCliente.DNI = Convert.ToInt32(text_DNI.Text);
             MyCliente.Fecha_Nacimiento = Convert.ToDateTime(text_fechaNacimiento.Text);
             MyCliente.Tel = Convert.ToInt32(text_tel.Text);
             MyCliente.Mail = Convert.ToString(text_mail.Text);

         }

         private bool ChequearCamposObligatorios()
         {
             bool camposInvalidos = false;

             if (string.IsNullOrEmpty(this.text_apellido.Text) || string.IsNullOrEmpty(this.text_codigoPostal.Text) ||
                 string.IsNullOrEmpty(this.text_direccion.Text) || string.IsNullOrEmpty(this.text_DNI.Text) ||
                 string.IsNullOrEmpty(this.text_fechaNacimiento.Text) || string.IsNullOrEmpty(this.text_nombre.Text) ||
                 string.IsNullOrEmpty(this.text_tel.Text))
             {
                 
                 camposInvalidos = true;
             }
             return camposInvalidos;
         }

         private void boton_limpiar_Click(object sender, EventArgs e)
         {
             text_apellido.Clear();
             text_codigoPostal.Clear();
             text_direccion.Clear();
             text_DNI.Clear();
             text_fechaNacimiento.Clear();
             text_mail.Clear();
             text_nombre.Clear();
             text_tel.Clear();
             //check_activo.Checked = false; 
         }
         public static bool validarEmail(string email)
         {
             string expresion = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";

             if (Regex.IsMatch(email, expresion))
             {
                 if (Regex.Replace(email, expresion, String.Empty).Length == 0)
                 { return true; }
                 else
                 { return false; }
             }
             else
             { return false; }
         }
    }
}
